package org.merak.core.annotation.types;

import org.merak.core.model.Identifiable;

/**
 * Copyright © 2010-2012 Merak Computing. All rights reserved.<br><br>
 *
 * Methods and declarations for SkipWhat.
 *
 * @author fmarinho.
 * @version 1.00.00 - Jul 22, 2012 - fmarinho - initial version.
 *
 * @since MerakCore 1.00.00
 */
public enum SkipWhat implements Identifiable<Integer> {

    //~ Enumerated values ////////////////////////////////////////////////////////
	//****************************************************************************
	UNKNOWN(-1),PERSISTENCE(0),JSON(1),XML(2),CSV(3);

    //~ Attributes ///////////////////////////////////////////////////////////////
	//****************************************************************************
	private final Integer id;

    //~ Constructors /////////////////////////////////////////////////////////////
    //****************************************************************************
	private SkipWhat(int id) {
		this.id = id;
	}

    //~ Methods //////////////////////////////////////////////////////////////////
	//****************************************************************************
	@Override
	public Integer getId() {
		return this.id;
	}
	//****************************************************************************
	@Override
	public boolean hasId(Integer id) {
		return this.id.equals(id);
	}
	//****************************************************************************
	@Override
	public boolean anonymous() {
		return false;
	}
	//****************************************************************************
	@Override
	public boolean selfsame(Identifiable<Integer> obj) {
		return obj == this;
	}
    //****************************************************************************
	public static SkipWhat getValue(int id) {

		for (SkipWhat e : values()) {
			if ( e.hasId(id) ) return e;
		}
		return UNKNOWN;

	}
	//****************************************************************************

}
